package com.shrct.businessprocess.customerservice;

import com.shrct.businessprocess.customerservice.IHasServiceRecords;
import com.shrct.businessprocess.customerservice.RCContractInstallInfoStatus;
import com.shrct.businessprocess.customerservice.RCInstallProgressStatus;
import com.shrct.businessprocess.customerservice.RCRequireStatus;
import com.shrct.businessprocess.customerservice.RCServiceDocumentType;
import com.shrct.businessprocess.customerservice.RCServiceRecord;
import com.shrct.businessprocess.customerservice.impl.RCContractInstallInfoImpl;
import com.shrct.businessprocess.customerservice.proxy.RCContractInstallInfoProxy;
import com.shrct.businessprocess.product.RCBrand;
import edu.fudan.mylang.pf.EntityImplementation;
import edu.fudan.mylang.pf.IModelObject;
import java.util.Collection;
import java.util.Date;
import org.eclipse.xtext.xbase.lib.Procedures.Procedure1;

@EntityImplementation(implementBy = RCContractInstallInfoImpl.class)
public interface RCContractInstallInfo extends IModelObject, IHasServiceRecords {
  public abstract RCRequireStatus getRequireInstall();
  
  public abstract RCContractInstallInfo setRequireInstall(final RCRequireStatus requireInstall);
  
  public abstract RCInstallProgressStatus getInstallProgress();
  
  public abstract RCContractInstallInfo setInstallProgress(final RCInstallProgressStatus installProgress);
  
  public abstract String getInstallLocation();
  
  public abstract RCContractInstallInfo setInstallLocation(final String installLocation);
  
  public abstract Date getInstallDate();
  
  public abstract RCContractInstallInfo setInstallDate(final Date installDate);
  
  public abstract Integer getInstallDays();
  
  public abstract RCContractInstallInfo setInstallDays(final Integer installDays);
  
  public abstract Boolean getIsFinished();
  
  public abstract RCContractInstallInfo setIsFinished(final Boolean isFinished);
  
  public abstract Date getInstallFinishDate();
  
  public abstract RCContractInstallInfo setInstallFinishDate(final Date installFinishDate);
  
  public abstract RCBrand getBrand();
  
  public abstract RCContractInstallInfo setBrand(final RCBrand brand);
  
  public abstract Collection<RCServiceDocumentType> getDocumentsRequired();
  
  public abstract RCContractInstallInfo addtoDocumentsRequired(final RCServiceDocumentType rCServiceDocumentType);
  
  public abstract RCContractInstallInfo setDocumentsRequired(final Iterable<RCServiceDocumentType> documentsRequired);
  
  public abstract RCContractInstallInfo removeFromDocumentsRequired(final RCServiceDocumentType rCServiceDocumentType);
  
  public abstract RCContractInstallInfo removeAllDocumentsRequired();
  
  public abstract Collection<RCServiceDocumentType> getDocumentsSubmitted();
  
  public abstract RCContractInstallInfo addtoDocumentsSubmitted(final RCServiceDocumentType rCServiceDocumentType);
  
  public abstract RCContractInstallInfo setDocumentsSubmitted(final Iterable<RCServiceDocumentType> documentsSubmitted);
  
  public abstract RCContractInstallInfo removeFromDocumentsSubmitted(final RCServiceDocumentType rCServiceDocumentType);
  
  public abstract RCContractInstallInfo removeAllDocumentsSubmitted();
  
  public abstract Collection<RCServiceRecord> getServiceRecords();
  
  public abstract RCContractInstallInfo addtoServiceRecords(final RCServiceRecord rCServiceRecord);
  
  public abstract RCContractInstallInfo setServiceRecords(final Iterable<RCServiceRecord> serviceRecords);
  
  public abstract RCContractInstallInfo removeFromServiceRecords(final RCServiceRecord rCServiceRecord);
  
  public abstract RCContractInstallInfo removeAllServiceRecords();
  
  public abstract String getComment();
  
  public abstract RCContractInstallInfo setComment(final String comment);
  
  public abstract RCInstallProgressStatus getFinishStatus();
  
  public abstract Boolean isFinish();
  
  public abstract RCContractInstallInfoStatus getStatus();
  
  public abstract void start();
  
  public abstract void setAsRequired();
  
  public abstract void setAsNotRequired();
  
  public abstract void cancel();
  
  public abstract void updateInfo(final Procedure1<? super RCContractInstallInfo> preInit);
  
  public abstract void finish(final Date finishDate);
  
  public abstract void sendMessage();
  
  public abstract void doAddtoServiceRecords(final RCServiceRecord serviceRecord);
  
  public abstract Boolean isWaiting4Initialize();
  
  public abstract Boolean isNotRequired();
  
  public abstract Boolean isExecuting();
  
  public abstract Boolean isFinished();
  
  public abstract RCContractInstallInfoProxy toProxy();
}
